/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package view;

import java.awt.Point;

/**
 * Azon grafikus objektumok gyűjtőosztálya, amelyek valamilyen eseményt váltanak
 * ki kattintás hatására.
 * @author Gergő
 */
public abstract class Clickable extends VisualElement{
    /**
     * Konstruktor, létrehozza a Clickable objektumot.
     * @param id A megfelelő modell-beli elem ID-ja.
     * @param pos Az elem pozíciója a rajzvásznon.
     * @param name Az elem típusa.
     * @param in A bemenetek száma.
     * @param out A kimenetek száma.
     */
    Clickable(int id, Point pos, String name, int in, int out){
        super(id, pos, name, in, out);
    }

    /**
     * Absztrakt függvény a megvalósítandó működéshez.
     */
    public abstract void doAction();

    /**
     * Megadja, hogy a Clickable objektum rajta van-e az adott ponton.
     * Ennek segítségével dönthetjük el, hogy melyik objektumra kattintottunk a
     * rajzvásznon.
     * @param x A kérdéses pont x koordinátája.
     * @param y A kérdéses pont y koordinátája.
     * @return Igaz, ha a Clickable objektum rajta van az adott ponton.
     */
    public boolean isThere(int x, int y){
        if ((x >= pos.x && x<= pos.x + width) && (y >= pos.y && y<= pos.y + height))
            return true;
        return false;
    }
}
